#include<stdio.h>

/*汉诺塔问题*/


/*
*算法步骤：
*1、n = 1：从A->C,退出
*2、否则：
*   （1）递归：将A上的1至n-1移到B上，此时C作为辅助塔
*   （2）将A上的第n个移到C上
    （3）递归：将B上的1至n-1移到C上，此时A作为辅助塔
*/

int m_count = 0;
void move(char A,int n,char C)
{
    printf("第%d次移动,%d,从%c搬运到%c\n",++m_count,n,A,C);
}

void Hanoi(int n,char A,char B,char C)
{
    if (n == 1)
    {
        return move(A,1,C);
    }
    else
    {
        Hanoi(n-1,A,C,B);
        move(A,n,C);
        Hanoi(n-1,B,A,C);
    }
    
}

int main(int argc, char const *argv[])
{
    char A = 'A';
    char B = 'B';
    char C = 'C';
    int n = 3;
    Hanoi(n,A,B,C);
    return 0;
}
